//
//  NTAVManager.h
//  AVManagerTest
//
//  Created by Henry Borja on 2/4/11.
//  Copyright 2011 Nanotalons LLC. All rights reserved.
//
//  Redistribution and use in source and binary forms, with or without
//  modification, are permitted provided that the following conditions are met:
//  * Redistributions of source code must retain the above copyright
//  notice, this list of conditions and the following disclaimer.
//  * Redistributions in binary form must reproduce the above copyright
//  notice, this list of conditions and the following disclaimer in the
//  documentation and/or other materials provided with the distribution.
//  * Neither the name of Nanotalons LLC. nor the
//  names of its contributors may be used to endorse or promote products
//  derived from this software without specific prior written permission.
//  
//  THIS SOFTWARE IS PROVIDED BY Nanotalons LLC. "AS IS" AND ANY
//  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
//  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
//  DISCLAIMED. IN NO EVENT SHALL Nanotalons LLC. BE LIABLE FOR ANY
//  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
//  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
//  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
//  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
//  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//  
#import "NTAVManagerConst.h"
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>

@protocol NTAVManagerDelegate<NSObject>

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;

@end


@interface NTAVManager : NSObject<AVAudioPlayerDelegate> {
	
	NSMutableDictionary *_avPlayers;
	NSMutableDictionary *_avPlayersLastAccessed;
	NSMutableArray		*_avQueue;
	AVAudioPlayer		*_avPlayer;
	
	NSNumber				*tidyUpInterval;
	id<NTAVManagerDelegate> delegate;
	
}

@property (nonatomic, assign) id delegate;
@property (nonatomic, retain) NSNumber *tidyUpInterval;

+(NTAVManager *)sharedInstance;
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;

-(AVAudioPlayer *)getAVPlayerByFileName:(NSString *) name;
-(void)playAudioByFileName:(NSString *) name;
-(void)addToQueueAudioByFileName:(NSString *) name;
-(void)playQueue;

-(void)tidyUpMemory;
-(void)flushMemory;

@end
